Virtualization allows multiplexing of the underlying host machine between different virtual machines. The host computer allocates a certain amount of its resources to each of the virtual machines. Each virtual machine is then able to use the allocated resources to execute applications, including operating systems (referred to as guest operating systems). The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor or a host operating system. The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.
In some systems, the host is a centralized server that is partitioned into multiple virtual machines to provide virtual desktops to the users. The number of virtual desktops that can be supported by a system is typically determined by a generalized rule. For example, a rule for the ratio of servers to virtual desktops may be 1:10, which means that each server can support up to 10 virtual desktops. After the virtual desktops are deployed based on this rule, a system administrator can adjust the system configuration based on the actual load of the system, such as adding more servers to the host or more bandwidth to the network. However, if the actual load is less than the estimated load, excess system resources would be under-utilized. Further, post deployment adjustment can result in system downtime and reduce productivity. Therefore, there is a need for capacity planning of a virtual desktop system before the deployment of the virtual desktop system.